package bizzard.server;

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;


//+----------------------------------------------------------------------+
//| FileFactory
//|
//| - utilitaire pour manipuler des fichiers
//+----------------------------------------------------------------------+

public class FileFactory {

	/*******************************************************************************
	 * recupere tous les fichiers d'un repertoire (non recursif)
	 * 
	 * @param path ~ le repertoire à explorer
	 * @return la liste des chemins des fichiers contenus dans ce repertoire
	 ******************************************************************************/
	public static ArrayList<String> getFilesNames(String path) {

		ArrayList<String> lisFilesNames = new ArrayList<String>();
		File repertoire = new File(path);

		if (repertoire.isDirectory()) {
				File[] list = repertoire.listFiles();
				if (list != null) {
					for (int i = 0; i < list.length; i++) {
						if(!list[i].getName().substring(0,1).contentEquals(".")) //si c'est un fichier caché on l'ignore (linux only)
							lisFilesNames.add(list[i].getName());
					}
				} else {
					System.err.println(repertoire + " : Erreur de lecture.");
				}
		}
		return lisFilesNames;
	}

	/*******************************************************************************
	 * recupere le contenu d'un fichier texte
	 * 
	 * @param filePath ~ le nom du fichier à explorer
	 * @return le contenu du fichier
	 * @throws FileNotFoundException le fichier specifié n'existe pas
	 ******************************************************************************/ 
	public static String getText(String filePath) throws FileNotFoundException {

		String text = "";
		File fichier = new File(filePath);

		Scanner scanner = new Scanner(fichier);
		while (scanner.hasNextLine()) {
			text = text + scanner.nextLine() + "\n";
		}
		scanner.close();

		return text;
	}
	
	/*******************************************************************************
	 * ajoute du texte au fichier spécifié
	 * 
	 * @param filePath ~ le nom du fichier à sauvegarder
	 * @param line ~ le texte à ajouter
	 ******************************************************************************/ 
	public static void setText(String filePath, String line) {

		File fichier = new File(filePath);
		FileWriter writer = null;
		BufferedWriter bufferWriter = null;
		
		try {
			fichier.createNewFile();
			writer = new FileWriter(fichier);
			bufferWriter = new BufferedWriter(writer);
			bufferWriter.write(line.trim());
			bufferWriter.close();
			
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
}